Есть ли способ сосредоточить отчеты о покрытии кода lcov только на одном или двух каталогах? - PullRequest
24 голосов
/ 08 мая 2009

Я недавно начал использовать lcov для визуализации покрытия кода. Это отличный инструмент.

Одна вещь, которую я замечаю, это то, что она генерирует отчеты о покрытии кода для всех файлов, которые я использую, включая те, которые мне не интересны. Например, это даст мне отчеты о покрытии кода для boost и mysql ++ файлы.

Существует ли простой способ заставить lcov генерировать отчеты о покрытии только для определенных файлов?

Я пытался использовать параметр -k следующим образом:

/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info

{run unit tests now}

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info
/usr/bin/genhtml -q -o lcov_output_directory app_total.info

(Это означает, что мне нужны только файлы покрытия для каталогов "include" и "src".)

Однако, похоже, это не работает. Отчет по-прежнему показывает мне все посторонние файлы. Любые предложения очень ценятся. Спасибо!

Ответы [ 3 ]

30 голосов
/ 12 февраля 2013

Я использовал флаг --no-external вместе с флагом --directory, чтобы исключить ненужные файлы.

Определение внешнего от человека:

Внешние исходные файлы - это файлы, которые не находятся ни в одном из каталогов, указанных в --directory или --base-directory.

Итак, моя команда выглядела так:

$ lcov  --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
  ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h
29 голосов
/ 08 мая 2009

lcov поддерживает аргумент командной строки - удалите , чтобы сделать именно то, что вы просите.

2 голосов
/ 16 июня 2009

Возможный подход заключается в ограничении того, какие файлы компилируются с флагами покрытия (-fprofile-arcs -ftest-покрытие). Если вы не хотите, чтобы ваша файловая система make была избирательной в отношении того, какие файлы создаются с помощью контрольно-измерительных приборов, вам может подойти следующий прием:

  • Создайте приложение без инструментов.
  • Удалите .o файлы для источника, который вы хотите инструмент
  • Включите приборы и восстановите. Только удаленные объектные файлы будут восстановлены с помощью инструментов.
  • Выполнить команду lcov

Это должно привести к тому, что только целевые области испускают артефакты gcov, которые слепо используются сценариями lcov.

...